@瞌睡虫
2年前 提问
1个回答

常用的端口扫描手段包括什么

X0_0X
2年前

常用的端口扫描手段包括:

  • TCP connect扫描:这种类型也称为开放扫描,它是最传统的扫描技术,程序调用connect()将套接口函数连接到目标端口,形成完整的TCP三次握手过程,能够成功建立连接的目标端口就是开放的。在UNIX下使用这种扫描方式不需要任何权限,而且它的扫描速度非常快,可以同时使用多个套接口进行连接来加快扫描速度。不过由于它不存在隐蔽性,所以不可避免地要被目标主机记录下连接信息和错误信息或者被防护系统拒绝。

  • TCP SYN扫描:这种类型也称为半开放式扫描(half-open scanning),原理是往目标端口发送一个SYN分组,若得到来自目标端口返回的SYN/ACK响应包,则目标端口开放,若得到RST响应,则目标端口未开放。在UNIX下执行这种扫描必须拥有root权限。由于它并未建立完整的TCP三次握手过程,很少会有操作系统记录到,因此比TCP connect扫描隐蔽得多。

  • TCP FIN扫描:根据RFC 793文档,程序向一个目标端口发送FIN分组,若此端口开放,则此包将被忽略,否则将返回RST分组。这是某些操作系统TCP实现存在的缺陷,并不是所有的操作系统都存在这个缺陷,所以它的准确率不高,而且此方法往往只能在UNIX上成功工作,因此这种方法不算特别流行,不过它的好处在于足够隐蔽。

  • TCP Reverse-ident扫描:根据RFC 1413文档,ident协议是一种确认用户连接到自己的协议,允许通过TCP连接得到进程所有者的用户名,即使该进程不是连接发起方。此方法可用于得到FTP所有者信息,以及其他需要的信息,等等。

  • TCP Xmas Tree扫描:根据RFC 793文档,程序往目标端口发送一个FIN、URG和PSH分组,若其关闭,应该返回一个RST分组。

  • TCP NULL扫描:根据RFC 793文档,程序往目标端口发送一个没有任何标志位的TCP包,如果目标端口是关闭的,将返回一个RST数据包。

  • TCP ACK扫描:这种扫描技术往往用来探测防火墙的类型,根据ACK位的设置情况可以确定该防火墙是简单的包过滤还是状态检测机制的防火墙。

  • TCP窗口扫描:由于TCP窗口大小报告方式不规则,这种扫描方法可以检测一些类UNIX系统(AIX、FreeBSD等)打开的端口以及是否过滤的端口。

  • TCP RPC扫描:UNIX系统特有的扫描方式,可以用于检测和定位远程过程调用(Remote Procedure Call,RPC)端口及其相关信息。

  • UDP ICMP端口不可达扫描:此方法利用UDP本身是无连接的协议,所以一个打开的UDP端口不会返回任何响应包。不过如果目标端口关闭,某些系统将返回ICMP PORT UNREACH信息。但是由于UDP是不可靠的非面向连接协议,所以这种扫描方法也容易出错,而且还比较慢。

  • 分片扫描:这是其他扫描方式的变形体,可以在发送一个扫描数据包时,通过将TCP包头分为几段,放入不同的IP包中,使得一些包过滤程序难以对其进行过滤,因此这个办法能绕过一些包过滤程序。

  • FTP跳转扫描:根据RFC 959文档,FTP协议支持代理(Proxy),可以连上提供FTP服务的服务器A,然后让A向目标主机B发送数据。若需要扫描B的端口,可以使用PORT命令,声明B的某个端口是开放的。若此端口确实开放,FTP服务器A将返回150和226信息,否则返回错误信息:“425 Can’t build data connection:Connection refused”。这种方式的隐蔽性很不错,在某些条件下也可以突破防火墙进行信息采集,缺点是速度比较慢。